1. Title screen NT


; Blank out bottom NT raster lines

[01E2B2] $e2b2: A9 27       LDA #$27                      A:06 X:00 Y:00 S:FD P0=18000 P1=1c000
[01E2B4] $e2b4: 8D 06 20    STA $2006                     A:27 X:00 Y:00 S:FD P0=18000 P1=1c000
[01E2B7] $e2b7: A9 C0       LDA #$C0                      A:27 X:00 Y:00 S:FD P0=18000 P1=1c000
[01E2B9] $e2b9: 8D 06 20    STA $2006                     A:C0 X:00 Y:00 S:FD P0=18000 P1=1c000

[01E2BC] $e2bc: A2 40       LDX #$40                      A:C0 X:00 Y:00 S:FD P0=18000 P1=1c000
[01E2BE] $e2be: A9 55       LDA #$55                      A:C0 X:40 Y:00 S:FD P0=18000 P1=1c000
[01E2C0] $e2c0: 8D 07 20    STA $2007                     A:55 X:40 Y:00 S:FD P0=18000 P1=1c000
[01E2C3] $e2c3: CA          DEX                           A:55 X:40 Y:00 S:FD P0=18000 P1=1c000
[01E2C4] $e2c4: 10 FA       BPL $E2C0                     A:55 X:3F Y:00 S:FD P0=18000 P1=1c000

; ==============================================================

; Begin 'River City Ransom' bitmap

[01E2C6] $e2c6: A2 00       LDX #$00                      A:55 X:FF Y:00 S:FD P0=18000 P1=1c000

; # runs

[01E2C8] $e2c8: BD 35 E3    LDA $E335,X  @ $E335 = $05    A:55 X:00 Y:00 S:FD P0=18000 P1=1c000
[01E2CB] $e2cb: D0 03       BNE $E2D0                     A:05 X:00 Y:00 S:FD P0=18000 P1=1c000

; done with segment

[01E2CD] $e2cd: 4C 00 E3    JMP $E300                     A:00 X:62 Y:00 S:FD P0=18000 P1=1c000

; set counter
; - bit 7 = Raw / 'RLE'

[01E2D0] $e2d0: 85 00       STA $00                       A:05 X:00 Y:00 S:FD P0=18000 P1=1c000
[01E2D2] $e2d2: 29 7F       AND #$7F                      A:05 X:00 Y:00 S:FD P0=18000 P1=1c000
[01E2D4] $e2d4: A8          TAY                           A:05 X:00 Y:00 S:FD P0=18000 P1=1c000

; mark VRAM address

[01E2D5] $e2d5: BD 36 E3    LDA $E336,X  @ $E336 = $85    A:05 X:00 Y:05 S:FD P0=18000 P1=1c000
[01E2D8] $e2d8: 48          PHA                           A:85 X:00 Y:05 S:FD P0=18000 P1=1c000
[01E2D9] $e2d9: BD 37 E3    LDA $E337,X  @ $E337 = $20    A:85 X:00 Y:05 S:FC P0=18000 P1=1c000
[01E2DC] $e2dc: 8D 06 20    STA $2006                     A:20 X:00 Y:05 S:FC P0=18000 P1=1c000
[01E2DF] $e2df: 68          PLA                           A:20 X:00 Y:05 S:FC P0=18000 P1=1c000
[01E2E0] $e2e0: 8D 06 20    STA $2006                     A:85 X:00 Y:05 S:FD P0=18000 P1=1c000

; offset structure bump

[01E2E3] $e2e3: E8          INX                           A:85 X:00 Y:05 S:FD P0=18000 P1=1c000
[01E2E4] $e2e4: E8          INX                           A:85 X:01 Y:05 S:FD P0=18000 P1=1c000
[01E2E5] $e2e5: E8          INX                           A:85 X:02 Y:05 S:FD P0=18000 P1=1c000

; --------------------------------------------------------------------

; load NT byte

[01E2E6] $e2e6: BD 35 E3    LDA $E335,X  @ $E338 = $01    A:85 X:03 Y:05 S:FD P0=18000 P1=1c000
[01E2E9] $e2e9: E8          INX                           A:01 X:03 Y:05 S:FD P0=18000 P1=1c000
[01E2EA] $e2ea: 85 01       STA $01                       A:01 X:04 Y:05 S:FD P0=18000 P1=1c000

; churn out byte

[01E2EC] $e2ec: A5 01       LDA $01      @ $0001 = $01    A:01 X:04 Y:05 S:FD P0=18000 P1=1c000
[01E2EE] $e2ee: 8D 07 20    STA $2007                     A:01 X:04 Y:05 S:FD P0=18000 P1=1c000

; Raw flag (bit 7)

[01E2F1] $e2f1: 24 00       BIT $00      @ $0000 = $05    A:01 X:04 Y:05 S:FD P0=18000 P1=1c000
[01E2F3] $e2f3: 30 02       BMI $E2F7                     A:01 X:04 Y:05 S:FD P0=18000 P1=1c000

; RLE = bump NT byte

[01E2F5] $e2f5: E6 01       INC $01      @ $0001 = $01    A:01 X:04 Y:05 S:FD P0=18000 P1=1c000

; Runs done

[01E2F7] $e2f7: 88          DEY                           A:01 X:04 Y:05 S:FD P0=18000 P1=1c000
[01E2F8] $e2f8: F0 CE       BEQ $E2C8                     A:01 X:04 Y:04 S:FD P0=18000 P1=1c000

; note: bits 6/7 are moved to (P) flags

[01E2FA] $e2fa: 24 00       BIT $00      @ $0000 = $05    A:01 X:04 Y:04 S:FD P0=18000 P1=1c000
[01E2FC] $e2fc: 10 EE       BPL $E2EC                     A:01 X:04 Y:04 S:FD P0=18000 P1=1c000

[01E2FE] $e2fe: 30 E6       BMI $E2E6                     A:87 X:38 Y:07 S:FD P0=18000 P1=1c000

; ==============================================================

; Other

[01E300] $e300: A9 D5       LDA #$D5                      A:00 X:62 Y:00 S:FD P0=18000 P1=1c000
[01E302] $e302: 85 00       STA $00                       A:D5 X:62 Y:00 S:FD P0=18000 P1=1c000

; ==============================================================
; ==============================================================


Algorithm looks at flag (bit 7), stored in the run byte.

If '1', then keep repeating byte to NT ($00).
If '0', then keep incrementing NT byte. ($10, $11, $12, ..)

Note that the vram offset precedes the 'run' bytes.


(See nt1.txt)

$1E335 = block 1
$1E339 = block 2
..